/**
 * 共用正则表达式校验工具库
 * @Date:2016-02-20
 */
(function ($, window) {
    //前台工具类对象
    window.$reg = window.$reg || {};
    /**
     * 校验通用
     * @param exp
     * @param str
     * @returns
     */
    window.$reg.regEnter=function(exp,str){
        if($reg.isNull(exp)){
            Msg.error("校验表达式不能为空");
            return false;
        }else if($reg.isNull(str)){
            Msg.error("被校验字符串不能为空");
            return false;
        }
        var reg=eval(exp);
        return reg.test(str);
    };

    /**
     * 空的校验
     * @param param
     * @returns {Boolean}
     */
    window.$reg.isNull=function(param){
        if(typeof(param)=="undefined"||param==null||param=="null"||param==""){
            return true;
        }else{
            return false;
        }
    };

    /**
     * 整数或者小数
     * @param str
     * @returns
     */
    window.$reg.intOrFloat=function(str){
        var exp="/^[0-9]+\.{0,1}[0-9]{0,2}$/";
        return $reg.regEnter(exp,str);
    };


    /**
     * 只能是数字
     * @param str
     * @returns
     */
    window.$reg.onlyInt=function(str){
        var exp="/^[0-9]*$/";
        return $reg.regEnter(exp,str);
    };


    /**
     * 只能输入n位的数字
     * @param str
     * @param n
     * @returns
     */
    window.$reg.onlyNNumInt=function(str,n){
        if($reg.isNull(n)){
            Msg.error("需要校验的数字位数不能为空！");
            return false;
        }
        var exp="/^\d{"+n+"}$/";
        return $reg.regEnter(exp,str);
    };

    /**
     * 至少n位数字
     * @param str
     * @param n
     * @returns
     */
    window.$reg.nNumInt=function(str,n){
        if($reg.isNull(n)){
            Msg.error("需要校验的数字位数不能为空！");
            return false;
        }
        var exp="/^\d{"+n+",}$/";
        return $reg.regEnter(exp,str);
    };

    /**
     * 只能输入非零开头的数字
     * @param str
     * @returns
     */
    window.$reg.zeroOrNoZeroStart=function(str){
        var exp="/^([1-9][0-9]*)$/";
        return $reg.regEnter(exp,str);
    };

    /**
     * 只能输入有n位小数的正实数
     * @param str
     * @param n
     * @returns
     */
    window.$reg.nDecimals=function(str,n){
        var exp="/^[0-9]+(.[0-9]{"+n+"})?$/";
        return $reg.regEnter(exp,str);
    };

    /**
     * 只能输入有n~m位小数的正实数
     * @param str
     * @param n
     * @param m
     * @returns
     */
    window.$reg.n_mDecimals=function(str,n,m){
        var exp="/^[0-9]+(.[0-9]{"+n+","+m+"})?$/";
        return $reg.regEnter(exp,str);
    };


    /**
     * 非零正整数
     * @param str
     * @returns
     */
    window.$reg.noZeroInt=function(str){
        var exp="/^\+?[1-9][0-9]*$/";
        return $reg.regEnter(exp,str);
    };


    /**
     * 菲零负整数
     * @param str
     * @returns
     */
    window.$reg.noZeroNegaInt=function(str){
        var exp="/^\-[1-9][0-9]*$/";
        return $reg.regEnter(exp,str);
    };

    /**
     * 长度为n的字符串
     * @param str
     * @returns
     */
    window.$reg.length_n_str=function(str,n){
        var exp="/^.{"+n+"}$/";
        return $reg.regEnter(exp,str);
    };


    /**
     * 由26个英文字母组成的字符串
     * @param str
     * @param aorA,大写或小写类型，A表示大写，a表示小写，不指定或其他置顶表示不限制大小写
     * @returns
     */
    window.$reg.letter_str=function(str,aorA){
        var exp;
        if($reg.isNull(aorA)){
            exp="/^[A-Za-z]+$/";
        }else if(aorA=="A"){
            exp="/^[A-Z]+$/";
        }else if(aorA=="a"){
            exp="/^[a-z]+$/";
        }else{
            exp="/^[A-Za-z]+$/";
        }
        return $reg.regEnter(exp,str);
    };



    /**
     * 由数字、26个英文字母或者下划线组成的字符串
     * @param str
     * @returns
     */
    window.$reg.letter_int_str=function(str){
        var exp="/^\w+$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 以字母开头，长度在n~m之间，只能包含字符、数字和下划线
     * @param str
     * @param n 最短长度
     * @param m 最长长度
     * @returns
     */
    window.$reg.nm_letter_int_str=function(str,n,m){
        var exp="/^[a-zA-Z]\w{"+n+","+m+"}$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 验证是否含有^%&',;=?$\"等特殊字符
     * @param str
     * @returns
     */
    window.$reg.isSpecialStr=function(str){
        var exp="/[^%&',;=?$\x22]+/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 只能输入汉字
     * @param str
     * @returns
     */
    window.$reg.chinese=function(str){
        var exp="/^[\u4e00-\u9fa5]{0,}$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 验证Email地址
     * @param str
     * @returns
     */
    window.$reg.email=function(str){
        var exp="/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 验证InternetURL地址
     * @param str
     * @returns
     */
    window.$reg.url=function(str){
        var exp="/^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 验证电话号码,正确格式为："XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"
     * @param str
     * @returns
     */
    window.$reg.phone=function(str){
        var exp="/^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 匹配手机号
     * @param str
     * @returns
     */
    window.$reg.mobile=function(str){
        var exp="/^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 验证身份证号（15位或18位数字）
     * @param str
     * @returns
     */
    window.$reg.idCard=function(str){
        var exp="/^\d{15}|\d{18}$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 货币输入校验
     * @param str
     * @returns
     */
    window.$reg.money=function(str){
        var exp="/^\d+\.\d{2}$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 验证一年的12月，正确格式为："01"～"09"和"1"～"12"。
     * @param str
     * @returns
     */
    window.$reg.month=function(str){
        var exp="/^(0?[1-9]|1[0-2])$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 验证一个月的31天,正确格式为；"01"～"09"和"1"～"31"。
     * @param str
     * @returns
     */
    window.$reg.day=function(str){
        var exp="/^((0?[1-9])|((1|2)[0-9])|30|31)$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 匹配html标签的正则表达式
     * @param str
     * @returns
     */
    window.$reg.html=function(str){
        var exp="/<(.*)>(.*)<\/(.*)>|<(.*)\/>/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 匹配空行的正则表达式
     * @param str
     * @returns
     */
    window.$reg.space=function(str){
        var exp="/\n[\s| ]*\r/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 匹配首尾空格的正则表达式
     * @param str
     * @returns
     */
    window.$reg.startEndSpace=function(str){
        var exp="/^(^\s*)|(\s*$)$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 匹配QQ号
     * @param str
     * @returns
     */
    window.$reg.qq=function(str){
        var exp="/^[1-9][0-9]{4,}$/";
        return $reg.regEnter(exp, str);
    };
    /**
     * 匹配邮编
     * @param str
     * @returns
     */
    window.$reg.zipCode=function(str){
        var exp="/^[\\d]{6}/";
        return $reg.regEnter(exp, str);
    };
    //---------------------------------------------------相关函数部分----------------------------------------------
    /**
     * 类似java中的trim函数
     */
    window.$reg.trim=function(str){
        return str.replace(/(^\s*)|(\s*$)/g, "");
    }



})(jQuery, window);
